package com.mjk.common.base.model;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.mjk.common.base.model.annotation.DefaultValue;
import com.mjk.common.util.BeanUtils;
import com.mjk.common.util.ReflectionUtils;

import org.springframework.context.annotation.Bean;
import org.springframework.util.ObjectUtils;

import java.io.Serial;
import java.io.Serializable;
import java.lang.reflect.Field;
/**
 * 该类为所有表对应类的基类
 * @author mjk
 *
 */
@SuppressWarnings("deprecation")
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
public class BaseEntity implements Serializable {


	public BaseEntity(){

    }

    /**
     * 初始化对象的时候 吧nullvalue 重置为 false
     */
	public void setDefaultValue(){ 
		for(Field f :this.getClass().getDeclaredFields()){
			//设置默认值
			DefaultValue defValue = f.getAnnotation(DefaultValue.class);
			if(null!=defValue && ObjectUtils.isEmpty(ReflectionUtils.getFieldValue(this, f.getName()))){
				BeanUtils.setFieldValue(this,f.getName(),defValue);
			}
		}
	}
	/**
	 * null -> ""
	 */
	public void setNull2Emptry(){
		for(Field f :this.getClass().getDeclaredFields()){
			if(ObjectUtils.isEmpty(ReflectionUtils.getFieldValue(this, f.getName())) && f.getType().equals(String.class)){
				ReflectionUtils.setFieldValue(this, f.getName(), "");
			}
		}
	}
	
	@Serial
	private static final long serialVersionUID = -4071860582273124727L;
}
